In an object oriented language having a class loading mechanism of a delegation model represented by Java (a registered trademark), a module is classified by a fully-qualified class name made by combining a class with a package name. As a result, even for classes having a same name, they can be classified as different class definitions by seeing a package name. In such language, it is possible to make packages and classes be integrated into a file as a module bundled for each provided function and distribute it.
Also, as a result of improvement of the performance of a computer and improvement of development efficiency, large-scale systems using a huge number of modules are increasing. In such a system, a dependence relationship exists between modules constituting the system, and the system is founded on a module of a specific version referring to another specific module to provide a specific function.
However, along with an enlarging scale of a system due to system updates and addition of functions, management of names, providing functions, versions, allocated places and the like of modules become complex. Therefore, problems such as collision of module names and packages, unexpected version dependence and an overlap of modules have been caused.
Accordingly, in recent years, a module management infrastructure which manages modules in units of bundles has been developed. A bundle includes definition information on the bundle in addition to a module. Definition information is a name that is called a symbolic name, a version number, a bundle to be referred to and the like. In a module management infrastructure, a module is classified by a pair of a symbolic name and a version number.
A module management infrastructure can verify versions and dependency relationships of bundles that are under control at the time of its activation, and detect collision of definition information of bundles and a mismatch of dependency relationships beforehand. Also, a module management infrastructure can update a bundle dynamically by managing a life cycle of the bundle. Therefore, according to a module management infrastructure, even in an environment where a system cannot be stopped, update as a bundle is possible. Recently, a module management infrastructure has been adopted in an application server and an integrated development environment, and the features such as a dynamic addition/deletion of a module and a non-stop module update are being utilized effectively.
For example, in patent document 1 (Japanese Patent Application Laid-Open No. 2012-93979), a technology which reduces a management load for modules by automatically generating a manifest file including definition information such as a symbolic name, a version number and a dependency relationship of a module in a module management infrastructure is disclosed.
Thus, in a module management infrastructure, a module which is made by dividing a program for each function is managed using a bundle including definitions such as a name and a version. Then, the module management infrastructure can perform state control of start and stop, confirm a dependency relationship with other bundles, and provide those functions to applications as a service.
However, although applications enjoy convenience thanks to these functions of a module management infrastructure, on the other side of a coin, the stringency of management of modules is increased, and thus more careful attention is needed for setting and updating definition information on a module than ever.
In a module management infrastructure like the one described in patent document 1, a pair of a version number and a symbolic name needs to be unique over the whole infrastructure. Therefore, there is a problem that, when a bundle having a same version number and a symbolic name has already exist on the module management infrastructure, a bundle added later is not loaded due to an error by collision of definition information on the bundles.
In a general module management infrastructure, it is possible to load bundles between which collision can happen, and give them bundle IDs in order of loading. However, there is a problem that another bundle having been added assuming use of a bundle of not being a management object refers to a wrong bundle, and, as a result, there is a possibility that an unexpected execution result will be caused.
An object of the present invention is to provide a module management apparatus, a module management system and a module management method which settle collision of definition information on bundles to enable coexistence of the bundles without correcting a bundle body, and compose a dependency relationship between the bundles correctly.